package com.tulele.vtool.wechat.service;

import com.tulele.vtool.model.SysGzh;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.util.http.apache.DefaultApacheHttpClientBuilder;
import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;
import org.springframework.stereotype.Service;

import javax.annotation.PostConstruct;

@Service
@Slf4j
public class WeixinServiceNew  {

    public static WxMpServiceImpl getWeixinService(SysGzh sysGzh) {

        WxMpServiceImpl wxMpService=new WxMpServiceImpl();
        WxMpInMemoryConfigStorage config = new WxMpInMemoryConfigStorage();

        // 设置微信公众号的appid
        config.setAppId(sysGzh.getAppId());
        // 设置微信公众号的app corpSecret
        config.setSecret(sysGzh.getSecret());
        // 设置微信公众号的token
        config.setToken(sysGzh.getToken());
        // 设置消息加解密密钥
        config.setAesKey(sysGzh.getAesKey());

        //config.setHttpProxyHost(..);//设置代理地址,没有可以无需设置
        //config.setHttpProxyPort(..);//设置代理端口,没有可以无需设置
        //config.setHttpProxyUsername(..);//设置代理用户名,没有可以无需设置
        //config.setHttpProxyPassword(..);//设置代理密码,没有可以无需设置

        DefaultApacheHttpClientBuilder clientBuilder = DefaultApacheHttpClientBuilder.get();
        clientBuilder.setConnectionRequestTimeout(15000);//从连接池获取链接的超时时间(单位ms)
        clientBuilder.setConnectionTimeout(5000);//建立链接的超时时间(单位ms),默认5000ms.(由于使用了连接池,这个参数没有实际意义)
        clientBuilder.setSoTimeout(5000);//连接池socket超时时间(单位ms)
        clientBuilder.setIdleConnTimeout(30000);//空闲链接的超时时间(单位ms)
        clientBuilder.setCheckWaitTime(10000);//空闲链接的检测周期(单位ms)
        clientBuilder.setMaxConnPerHost(200);//每路最大连接数
        clientBuilder.setMaxTotalConn(1500);//连接池最大连接数
        //clientBuilder.setUserAgent(..)//HttpClient请求时使用的User Agent
        config.setApacheHttpClientBuilder(clientBuilder); //设置自定义的ApacheHttpClientBuilder

        wxMpService.setWxMpConfigStorage(config);

        return  wxMpService;

    }

}
